package woogieunit.annotations;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;


/**
 * Describes a targetted benchmark , or a formal parameter to a targetted benchmark 
 * method which should be scaled during  benchmarking.
 * An exception will be thrown if this annotation is used on a method or formal parameter 
 * of a method which is not described by the Benchmark annotation. A Scales annotation for a 
 * targetted benchmark will have some or all of its values overridden by a Scales annotation on a 
 * formal parameter for the targetted benchmark. 
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.PARAMETER})
@Documented
public @interface Scales {
	/**
	 * The name (as returned by name()) of the method described as a ScalingMethod which will 
	 * provide scaling input for this targetted benchmark or targetted benchmark formal parameter.
	 * @return
	 */
	String scalingMethod(); 
}
